package org.example.attivita;
import org.example.main.CentroCommerciale.*;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import java.util.StringTokenizer;

import org.example.hellogooglemaps.Coordinata;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.location.Location;



public class Attivita{

		private String tipologia;
		private String nome;
		private String indirizzo;
		private String telefono;
		private String fax;
		private String sitoWeb;
		private String email;
		private String descrizione;		
		private Coordinata[] coordinate;
		private Drawable logo;
		private Drawable logoMappa;
		private LinkedList<Offerta> offerte;
		private Drawable[] altreImmagini;
		private String stringaParametriStreetView;
		

		//COSTRUTTORI
		//di default
		public Attivita(){
			tipologia="non definito";
			descrizione="non definito";
			telefono="non definito";
			indirizzo="non definito";
		}

		//costruttore utilizzato dalla funzione di caricamento
		public Attivita(String nome,String tipologia, String indirizzo, String telefono, String fax, String email, String sitoWeb, String descrizione, Coordinata[] coordinate, Drawable logo, Drawable logoMappa, String streetView){
			this.nome=nome;
			this.coordinate=coordinate;
			this.tipologia=tipologia;
			this.descrizione=descrizione;
			this.telefono=telefono;
			this.indirizzo=indirizzo;
			this.fax=fax;
			this.logo=logo;
			this.sitoWeb=sitoWeb;
			this.email=email;
			this.logoMappa=logoMappa;
			this.stringaParametriStreetView=streetView;
		}
		//costruttore completo
		public Attivita(String nome,String tipologia, String descrizione, String telefono, String fax, String indirizzo, Coordinata lat, Coordinata lon, Drawable logo, LinkedList<Offerta> offerte, String sito, String email, Drawable[] altreImmagini, Drawable logoMappa){
			this.nome=nome;
			this.coordinate=new Coordinata[2];
			this.tipologia=tipologia;
			this.descrizione=descrizione;
			this.fax=fax;
			this.telefono=telefono;
			this.indirizzo=indirizzo;
			this.logo=logo;
			this.offerte=offerte;
			this.coordinate[0]=lat;
			this.coordinate[1]=lon;
			this.sitoWeb=sito;
			this.email=email;
			this.altreImmagini=altreImmagini;
			this.logoMappa=logoMappa;
		}
		
		
		//metodi get
		public String getNome(){
			return nome;
		}
		
		public String getTipologia(){
			return tipologia;
		}
		public String getDescrizione(){
			return descrizione;
		}
		public String getTelefono(){
			return telefono;
		}
		public String getIndirizzo(){
			return indirizzo;
		}
		public Coordinata getLongitudine(){
			return coordinate[0];
		}
		public Coordinata getLatitudine(){
			return coordinate[1];
		}
		public int getLatitudineGeoPoint(){
			return (int) (coordinate[0].getDouble()*1000000);
		}
		
		public int getLongitudineGeoPoint(){
			return (int) (coordinate[1].getDouble()*1000000);
		}
		public Drawable getLogo(){
			return logo;
		}
		public Drawable getLogoMappa(){
			return logoMappa;
		}
		public Drawable[] getAltreImmagini(){
			return altreImmagini;
		}
		public LinkedList<Offerta> getOfferte(){
			return offerte;
		}
		public String getSito(){
			return sitoWeb;
		}
		public String getEmail(){
			return email;
		}
		public String getStringaParametriStreetView(){
			return stringaParametriStreetView;
		}
		//metodi set
		public void setNome(String nome)
			{
			this.nome=nome;
			}
		public void setTipologia(String tipologia)
			{
			this.tipologia = tipologia;
			}

		public void setDescrizione(String descrizione)
			{
			this.descrizione = descrizione;
			}

		public void setTelefono(String telefono)
			{
			this.telefono= telefono ;
			}

		public void setIndirizzo(String indirizzo)
			{
			this.indirizzo = indirizzo;
			}

		public void setCoordinate(Coordinata longitudine, Coordinata latitudine)
			{
			this.coordinate[0]=longitudine;
			this.coordinate[1]=latitudine;
			}
		

		public void setLogo()
			{
			// da implementare
			}

		public void setOfferte(LinkedList<Offerta> offerte)
			{
			this.offerte=offerte;
			}

		public void setSito(String sito){
			this.sitoWeb=sito;
		}
		
		public void setEmail(String email){
			this.email=email;
		}

		public void setStringaParametriStreetView(String sw){
			this.stringaParametriStreetView=sw;
		}

		//metodi utilita
		public int  getDistanzaDaMe(Coordinata miaLat, Coordinata miaLon){
			float distanza[]=new float[3];
			double startLatitude=miaLat.getDouble();
			double startLongitude=miaLon.getDouble();
			double endLatitude=coordinate[0].getDouble();
			double endLongitude=coordinate[1].getDouble();
			Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, distanza);
			return (int) distanza[0];
		}
		
		//funzione caricamento offerte
		public boolean caricaOfferte(Context c) throws Exception{
			
				offerte=new LinkedList<Offerta>();
				BufferedReader br= new BufferedReader(new FileReader("/sdcard/dbofferte.dat"));
				//legge la prima linea
				String linea=br.readLine();
				//debug//System.out.println(linea+"\n");	
					while(linea!=null){
						if(linea.equalsIgnoreCase(this.nome)){
							//debug//System.out.println("sono dentro l'if");
							linea=br.readLine();
							//debug//System.out.println("linea "+linea);
							while(!linea.startsWith("***")){
								    //debug//System.out.println("sono dentro il while");
									StringTokenizer st = new StringTokenizer(linea,"#");
									String nome=st.nextToken();
									String descrizione=st.nextToken();
									//debug//System.out.println(nome+" "+descrizione);
									Drawable img=c.getResources().getDrawable(Integer.parseInt(st.nextToken(),16));
									//debug//System.out.println("sono dopo il drowable");
									GregorianCalendar dataScadenza=new GregorianCalendar(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));
									Offerta o=new Offerta(nome, descrizione, dataScadenza, img);
					
									this.offerte.add(o);
									//debug//System.out.println("ho aggiunto l'offerta");
									
								linea=br.readLine();
								//debug//System.out.println(linea);
									
							}	
							//debug//System.out.println("sto uscendo");
							return true;
						}
						//debug//System.out.println("sono oltre l'if\n");	
						linea=br.readLine();
						//debug//System.out.println("linea "+linea);
					}
					
					
			
				
			
	        
			
			return false;
			
		}


}
